;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;//BORRA MODELOS NO ELEGIDOS///////////////////////////////////////////////////////////////////////////////////
;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;BORRAR PORTATILES QUE NO TENGAN LA VELOCIDAD DADA
(defrule borrar-modelos-velocidad-no-incluida
	?modelo <- (fase borrar-modelos-velocidad-no-incluido)
	?velocidadMin <- (velocidadMin ?velocidadMinPC)
	?velocidadMax <- (velocidadMax ?velocidadMaxPC)
	=> 
	;;MOSTRAR CARACTERISTICAS
	(retract ?modelo)
	(retract ?velocidadMin)
	(retract ?velocidadMax)
	(bind ?result (run-query* obtener-portatiles))
	(while (?result next)
		(bind ?port (?result getObject port))
		(if(or(< ?port.velocidad ?velocidadMinPC)(> ?port.velocidad ?velocidadMaxPC)) then
				(modify ?port (seleccionado FALSE))
		)
	)
)


(defrule busqueda-por-velocidad
   ?fase <- (fase busqueda-por-caracteristica 6)
=>
	( printout t "--------------Seleccione el disco que desea: ---------------------" crlf )
	
	( printout t "1. De 2.13 GHz " crlf )
	( printout t "2. De 2.26 GHz " crlf )
	( printout t "3. De 2.4 GHz " crlf )
	( printout t "4. De 2.53 GHz " crlf )
	( printout t "5. De 2.66 GHz " crlf )
	( printout t "6. De 2.8 GHz " crlf )
	( printout t "7. De 2.93 GHz " crlf )
	(assert (velocidad (read)) ) 
)
		;;//SELECCION NO VALIDA////////////////////////////////////////////////////
		(defrule seleccion-velocidad-erronea
			?fase <- (fase busqueda-por-caracteristica 6)
			?eleccion <- (velocidad ?numero)
			(test (or (not(integerp ?numero))
				(< ?numero 1)
				(> ?numero 7) 
				))  	
			=>
			(retract ?fase ?eleccion )
			(assert (fase busqueda-por-caracteristica 6) )
			(printout t "La opcion elegida no es valida." crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)

		;;//SELECCION VALIDA////////////////////////////////////////////////////
		(defrule seleccion-velocidad-correcta
			?fase <- (fase busqueda-por-caracteristica 6)
			?eleccion <- (velocidad ?numero)
			(test (and (integerp ?numero)
				(> ?numero 0)
				(< ?numero 8) 
			))  
			=>
			(retract ?fase ?eleccion)
			(assert (fase mostrar-PCs-por-velocidad ?numero))
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)
		
		
		;;//PORTATILES de 2.13 GHz///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-velocidad1
			?fase <- (fase mostrar-PCs-por-velocidad 1) 
		=>
			(retract ?fase)
			(assert (velocidadMin 2.13))
			(assert (velocidadMax 2.13))
			(assert (criterio (texto CPU_DE_2.13GHz)))
			(assert (fase borrar-modelos-velocidad-no-incluido))
		)
		
		
		;;//PORTATILES de 2.26 GHz///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-velocidad1
			?fase <- (fase mostrar-PCs-por-velocidad 2) 
		=>
			(retract ?fase)
			(assert (velocidadMin 2.26))
			(assert (velocidadMax 2.26))
			(assert (criterio (texto CPU_DE_2.26GHz)))
			(assert (fase borrar-modelos-velocidad-no-incluido))
		)
		
		;;//PORTATILES de 2.4 GHz///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-velocidad2
			?fase <- (fase mostrar-PCs-por-velocidad 3) 
		=>
			(retract ?fase)
			(assert (velocidadMin 2.4))
			(assert (velocidadMax 2.4))
			(assert (criterio (texto CPU_DE_2.4GHz)))
			(assert (fase borrar-modelos-velocidad-no-incluido))
		)
		
		;;//PORTATILES de 2.53 GHz///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-velocidad3
			?fase <- (fase mostrar-PCs-por-velocidad 4) 
		=>
			(retract ?fase)
			(assert (velocidadMin 2.53))
			(assert (velocidadMax 2.53))
			(assert (criterio (texto CPU_DE_2.53GHz)))
			(assert (fase borrar-modelos-velocidad-no-incluido))
		)
		
			;;//PORTATILES de 2.66 GHz///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-velocidad3
			?fase <- (fase mostrar-PCs-por-velocidad 5) 
		=>
			(retract ?fase)
			(assert (velocidadMin 2.66))
			(assert (velocidadMax 2.66))
			(assert (criterio (texto CPU_DE_2.66GHz)))
			(assert (fase borrar-modelos-velocidad-no-incluido))
		)
		
		;;//PORTATILES de 2.8 GHz///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-velocidad4
			?fase <- (fase mostrar-PCs-por-velocidad 6) 
		=>
			(retract ?fase)
			(assert (velocidadMin 2.8))
			(assert (velocidadMax 2.8))
			(assert (criterio (texto CPU_DE_2.8GHz)))
			(assert (fase borrar-modelos-velocidad-no-incluido))
		)
		
		
		;;//PORTATILES de 2.93 GHz///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-velocidad5
			?fase <- (fase mostrar-PCs-por-velocidad 7) 
		=>
			(retract ?fase)
			(assert (velocidadMin 2.93))
			(assert (velocidadMax 2.93))
			(assert (criterio (texto CPU_DE_2.93GHz)))
			(assert (fase borrar-modelos-velocidad-no-incluido))
		)
		
		